package cn.tedu.api;

/**
 * Date：2021年10月
 * Author：程Sir
 * Name： JavaSE-API
 * Content:
 *
 *  泛型： 可以在类和对象、接口中预先使用未知类型
 *
 *      泛型是数据类型的一部分，将类名和泛型合并在一起可以看做是数据类型。
 *
 *   结构：
 *      修饰词 class 类名<代表泛型的变量>{}
 *          注意：代表泛型的变量一般使用单个的大写英文字母。
 *
 *          class ArrayList<E>{
 *              public boolean add(E e);
 *
 *              public E Set(int index,E e){...};
 *          }
 *
 *
 *    泛型的具体类型是在创建对象时才被确定的！
 *    Collection<String> c = new ArrayList(); // 当前的集合只能传入指定的泛型类型【具体的类型是String】
 *
 *      上面的代码就会编译为：
 *           class ArrayList<String>{
 *  *              public boolean add(String e);
 *  *
 *  *              public E Set(int index,String e){...};
 *  *          }
 *
 *
 */
// 其中ChengSir就是给当前类添加的泛型，只有当创建当前类的对象时，才能确定泛型具体的类型
public class GenericDemo<ChengSir> {

    public ChengSir chengSir;

    public ChengSir getChengSir() {
        return chengSir;
    }

    public void setChengSir(ChengSir chengSir) {

        this.chengSir = chengSir;
        System.out.println(chengSir);
    }


    public static void main(String[] args) {
        // 创建自定义类的对象，泛型类型具体为：String
        GenericDemo<String> demo = new GenericDemo();
        demo.setChengSir("程勇");
        String name = demo.getChengSir();
        System.out.println(name);

        // 创建自定义类的对象，泛型类型具体为：Integer
        GenericDemo<Integer> demo1 = new GenericDemo();
        demo1.setChengSir(100);
        Integer score = demo1.getChengSir();
        System.out.println(score);


    }

}
